"""

Python 语言支持以下类型的运算符:
    算术运算符：+ - * / % ** //
    比较（关系）运算符：== ！= <= >= > <
    赋值运算符：=,+=,-=,*=,/=,%=,**=,//=,:=
    位运算符：& | ^ ~ << >>
    逻辑运算符：and or not
    成员运算符：in,not in
    身份运算符：is,is not
    运算符优先级：
"""
print("==========算数运算符==========")
a = 21
b = 10
c = 0
print('相加的值：', a + b)
print('相减的值：', a - b)
print('相乘的值：', a * b)
print('相除的值：', a / b)
print('相除后取余数的值：', a % b)
print('相除后取整数的值：', a // b)
print('次幂(次方)的值：', b ** 2)

print("==========比较运算符==========")
a1 = 1
b1 = 2
print("==的值：", a1 == b1)
print("!=的值：", a1 != b1)
print(">=的值：", a1 >= b1)
print("<=的值：", a1 <= b1)
print(">的值：", a1 > b1)
print("<的值：", a1 < b1)

print("==========赋值运算符==========")
a2 = 21
b2 = 10
c2 = 0

# 下方测试时，需要把待测之外的print语句注释掉
# c2 = a2 + b2
# print('标准赋值运算符：=的值：', c2)
#
# c2 += a2
# print('复合赋值运算符：+=的值：', c2)
#
# c2 -= a2
# print('复合赋值运算符：-=的值：', c2)
#
# c2 *= a2
# print('复合赋值运算符：*=的值：', c2)
#
# c2 /= a2
# print('复合赋值运算符：/=的值：', c2)
#
# c2 %= a2
# print('复合赋值运算符：%=的值：', c2)
#
# c2 **= a2
# print('复合赋值运算符：**=的值：', c2)

c2 //= a2
print('复合赋值运算符：//=的值：', c2)

print("==========位运算符==========")
# 将数值转换为二进制后进行计算



print("==========逻辑运算符==========")
x = False
y = True
print('x and y的值：', x and y)  # 【与】：x为False，则返回x的值，否则返回y的值
print('x or y的值：', x or y)  # 【或】：x为True，则返回x的值，否则返回y的值
print('x not y的值：', not (x and b))  # 【非】：x为True，则返回False，否则返回True

print("==========成员运算符==========")
int_a = 1
int_b = 6
list_int = [1, 2, 3]
print('in包含：', int_a in list_int)
print('in包含：', int_b in list_int)
print('not in不包含：', int_b not in list_int)  # 6不包含在列表里边

print("==========身份运算符==========")
a4 = 20
b4 = 20
print(id(a4))  # 打印内存地址
print(id(b4))  # 打印内存地址
print(a4 is b4)
print(id(a4) == id(b4))  # id() 函数用于获取对象的内存地址。

b4 = 30  # 修改b4的值
print(id(b4))  # 再次打印b4的内存地址
print(a4 is b4)  # 判断地址
print(a4 is not b4)  # 判断地址
